home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / sound / asoundef.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  13.9 KB  |  285 lines

  1. #ifndef __SOUND_ASOUNDEF_H
  2. #define __SOUND_ASOUNDEF_H
  3.  
  4. /*
  5.  *  Advanced Linux Sound Architecture - ALSA - Driver
  6.  *  Copyright (c) 1994-2000 by Jaroslav Kysela <perex@perex.cz>
  7.  *
  8.  *
  9.  *   This program is free software; you can redistribute it and/or modify
  10.  *   it under the terms of the GNU General Public License as published by
  11.  *   the Free Software Foundation; either version 2 of the License, or
  12.  *   (at your option) any later version.
  13.  *
  14.  *   This program is distributed in the hope that it will be useful,
  15.  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  *   GNU General Public License for more details.
  18.  *
  19.  *   You should have received a copy of the GNU General Public License
  20.  *   along with this program; if not, write to the Free Software
  21.  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
  22.  *
  23.  */
  24.  
  25. /****************************************************************************
  26.  *                                                                          *
  27.  *        Digital audio interface                        *
  28.  *                                                                          *
  29.  ****************************************************************************/
  30.  
  31. /* AES/IEC958 channel status bits */
  32. #define IEC958_AES0_PROFESSIONAL    (1<<0)    /* 0 = consumer, 1 = professional */
  33. #define IEC958_AES0_NONAUDIO        (1<<1)    /* 0 = audio, 1 = non-audio */
  34. #define IEC958_AES0_PRO_EMPHASIS    (7<<2)    /* mask - emphasis */
  35. #define IEC958_AES0_PRO_EMPHASIS_NOTID    (0<<2)    /* emphasis not indicated */
  36. #define IEC958_AES0_PRO_EMPHASIS_NONE    (1<<2)    /* none emphasis */
  37. #define IEC958_AES0_PRO_EMPHASIS_5015    (3<<2)    /* 50/15us emphasis */
  38. #define IEC958_AES0_PRO_EMPHASIS_CCITT    (7<<2)    /* CCITT J.17 emphasis */
  39. #define IEC958_AES0_PRO_FREQ_UNLOCKED    (1<<5)    /* source sample frequency: 0 = locked, 1 = unlocked */
  40. #define IEC958_AES0_PRO_FS        (3<<6)    /* mask - sample frequency */
  41. #define IEC958_AES0_PRO_FS_NOTID    (0<<6)    /* fs not indicated */
  42. #define IEC958_AES0_PRO_FS_44100    (1<<6)    /* 44.1kHz */
  43. #define IEC958_AES0_PRO_FS_48000    (2<<6)    /* 48kHz */
  44. #define IEC958_AES0_PRO_FS_32000    (3<<6)    /* 32kHz */
  45. #define IEC958_AES0_CON_NOT_COPYRIGHT    (1<<2)    /* 0 = copyright, 1 = not copyright */
  46. #define IEC958_AES0_CON_EMPHASIS    (7<<3)    /* mask - emphasis */
  47. #define IEC958_AES0_CON_EMPHASIS_NONE    (0<<3)    /* none emphasis */
  48. #define IEC958_AES0_CON_EMPHASIS_5015    (1<<3)    /* 50/15us emphasis */
  49. #define IEC958_AES0_CON_MODE        (3<<6)    /* mask - mode */
  50. #define IEC958_AES1_PRO_MODE        (15<<0)    /* mask - channel mode */
  51. #define IEC958_AES1_PRO_MODE_NOTID    (0<<0)    /* not indicated */
  52. #define IEC958_AES1_PRO_MODE_STEREOPHONIC (2<<0) /* stereophonic - ch A is left */
  53. #define IEC958_AES1_PRO_MODE_SINGLE    (4<<0)    /* single channel */
  54. #define IEC958_AES1_PRO_MODE_TWO    (8<<0)    /* two channels */
  55. #define IEC958_AES1_PRO_MODE_PRIMARY    (12<<0)    /* primary/secondary */
  56. #define IEC958_AES1_PRO_MODE_BYTE3    (15<<0)    /* vector to byte 3 */
  57. #define IEC958_AES1_PRO_USERBITS    (15<<4)    /* mask - user bits */
  58. #define IEC958_AES1_PRO_USERBITS_NOTID    (0<<4)    /* not indicated */
  59. #define IEC958_AES1_PRO_USERBITS_192    (8<<4)    /* 192-bit structure */
  60. #define IEC958_AES1_PRO_USERBITS_UDEF    (12<<4)    /* user defined application */
  61. #define IEC958_AES1_CON_CATEGORY    0x7f
  62. #define IEC958_AES1_CON_GENERAL        0x00
  63. #define IEC958_AES1_CON_LASEROPT_MASK    0x07
  64. #define IEC958_AES1_CON_LASEROPT_ID    0x01
  65. #define IEC958_AES1_CON_IEC908_CD    (IEC958_AES1_CON_LASEROPT_ID|0x00)
  66. #define IEC958_AES1_CON_NON_IEC908_CD    (IEC958_AES1_CON_LASEROPT_ID|0x08)
  67. #define IEC958_AES1_CON_MINI_DISC    (IEC958_AES1_CON_LASEROPT_ID|0x48)
  68. #define IEC958_AES1_CON_DVD        (IEC958_AES1_CON_LASEROPT_ID|0x18)
  69. #define IEC958_AES1_CON_LASTEROPT_OTHER    (IEC958_AES1_CON_LASEROPT_ID|0x78)
  70. #define IEC958_AES1_CON_DIGDIGCONV_MASK 0x07
  71. #define IEC958_AES1_CON_DIGDIGCONV_ID    0x02
  72. #define IEC958_AES1_CON_PCM_CODER    (IEC958_AES1_CON_DIGDIGCONV_ID|0x00)
  73. #define IEC958_AES1_CON_MIXER        (IEC958_AES1_CON_DIGDIGCONV_ID|0x10)
  74. #define IEC958_AES1_CON_RATE_CONVERTER    (IEC958_AES1_CON_DIGDIGCONV_ID|0x18)
  75. #define IEC958_AES1_CON_SAMPLER        (IEC958_AES1_CON_DIGDIGCONV_ID|0x20)
  76. #define IEC958_AES1_CON_DSP        (IEC958_AES1_CON_DIGDIGCONV_ID|0x28)
  77. #define IEC958_AES1_CON_DIGDIGCONV_OTHER (IEC958_AES1_CON_DIGDIGCONV_ID|0x78)
  78. #define IEC958_AES1_CON_MAGNETIC_MASK    0x07
  79. #define IEC958_AES1_CON_MAGNETIC_ID    0x03
  80. #define IEC958_AES1_CON_DAT        (IEC958_AES1_CON_MAGNETIC_ID|0x00)
  81. #define IEC958_AES1_CON_VCR        (IEC958_AES1_CON_MAGNETIC_ID|0x08)
  82. #define IEC958_AES1_CON_DCC        (IEC958_AES1_CON_MAGNETIC_ID|0x40)
  83. #define IEC958_AES1_CON_MAGNETIC_DISC    (IEC958_AES1_CON_MAGNETIC_ID|0x18)
  84. #define IEC958_AES1_CON_MAGNETIC_OTHER    (IEC958_AES1_CON_MAGNETIC_ID|0x78)
  85. #define IEC958_AES1_CON_BROADCAST1_MASK 0x07
  86. #define IEC958_AES1_CON_BROADCAST1_ID    0x04
  87. #define IEC958_AES1_CON_DAB_JAPAN    (IEC958_AES1_CON_BROADCAST1_ID|0x00)
  88. #define IEC958_AES1_CON_DAB_EUROPE    (IEC958_AES1_CON_BROADCAST1_ID|0x08)
  89. #define IEC958_AES1_CON_DAB_USA        (IEC958_AES1_CON_BROADCAST1_ID|0x60)
  90. #define IEC958_AES1_CON_SOFTWARE    (IEC958_AES1_CON_BROADCAST1_ID|0x40)
  91. #define IEC958_AES1_CON_IEC62105    (IEC958_AES1_CON_BROADCAST1_ID|0x20)
  92. #define IEC958_AES1_CON_BROADCAST1_OTHER (IEC958_AES1_CON_BROADCAST1_ID|0x78)
  93. #define IEC958_AES1_CON_BROADCAST2_MASK 0x0f
  94. #define IEC958_AES1_CON_BROADCAST2_ID    0x0e
  95. #define IEC958_AES1_CON_MUSICAL_MASK    0x07
  96. #define IEC958_AES1_CON_MUSICAL_ID    0x05
  97. #define IEC958_AES1_CON_SYNTHESIZER    (IEC958_AES1_CON_MUSICAL_ID|0x00)
  98. #define IEC958_AES1_CON_MICROPHONE    (IEC958_AES1_CON_MUSICAL_ID|0x08)
  99. #define IEC958_AES1_CON_MUSICAL_OTHER    (IEC958_AES1_CON_MUSICAL_ID|0x78)
  100. #define IEC958_AES1_CON_ADC_MASK    0x1f
  101. #define IEC958_AES1_CON_ADC_ID        0x06
  102. #define IEC958_AES1_CON_ADC        (IEC958_AES1_CON_ADC_ID|0x00)
  103. #define IEC958_AES1_CON_ADC_OTHER    (IEC958_AES1_CON_ADC_ID|0x60)
  104. #define IEC958_AES1_CON_ADC_COPYRIGHT_MASK 0x1f
  105. #define IEC958_AES1_CON_ADC_COPYRIGHT_ID 0x16
  106. #define IEC958_AES1_CON_ADC_COPYRIGHT    (IEC958_AES1_CON_ADC_COPYRIGHT_ID|0x00)
  107. #define IEC958_AES1_CON_ADC_COPYRIGHT_OTHER (IEC958_AES1_CON_ADC_COPYRIGHT_ID|0x60)
  108. #define IEC958_AES1_CON_SOLIDMEM_MASK    0x0f
  109. #define IEC958_AES1_CON_SOLIDMEM_ID    0x08
  110. #define IEC958_AES1_CON_SOLIDMEM_DIGITAL_RECORDER_PLAYER (IEC958_AES1_CON_SOLIDMEM_ID|0x00)
  111. #define IEC958_AES1_CON_SOLIDMEM_OTHER    (IEC958_AES1_CON_SOLIDMEM_ID|0x70)
  112. #define IEC958_AES1_CON_EXPERIMENTAL    0x40
  113. #define IEC958_AES1_CON_ORIGINAL    (1<<7)    /* this bits depends on the category code */
  114. #define IEC958_AES2_PRO_SBITS        (7<<0)    /* mask - sample bits */
  115. #define IEC958_AES2_PRO_SBITS_20    (2<<0)    /* 20-bit - coordination */
  116. #define IEC958_AES2_PRO_SBITS_24    (4<<0)    /* 24-bit - main audio */
  117. #define IEC958_AES2_PRO_SBITS_UDEF    (6<<0)    /* user defined application */
  118. #define IEC958_AES2_PRO_WORDLEN        (7<<3)    /* mask - source word length */
  119. #define IEC958_AES2_PRO_WORDLEN_NOTID    (0<<3)    /* not indicated */
  120. #define IEC958_AES2_PRO_WORDLEN_22_18    (2<<3)    /* 22-bit or 18-bit */
  121. #define IEC958_AES2_PRO_WORDLEN_23_19    (4<<3)    /* 23-bit or 19-bit */
  122. #define IEC958_AES2_PRO_WORDLEN_24_20    (5<<3)    /* 24-bit or 20-bit */
  123. #define IEC958_AES2_PRO_WORDLEN_20_16    (6<<3)    /* 20-bit or 16-bit */
  124. #define IEC958_AES2_CON_SOURCE        (15<<0)    /* mask - source number */
  125. #define IEC958_AES2_CON_SOURCE_UNSPEC    (0<<0)    /* unspecified */
  126. #define IEC958_AES2_CON_CHANNEL        (15<<4)    /* mask - channel number */
  127. #define IEC958_AES2_CON_CHANNEL_UNSPEC    (0<<4)    /* unspecified */
  128. #define IEC958_AES3_CON_FS        (15<<0)    /* mask - sample frequency */
  129. #define IEC958_AES3_CON_FS_44100    (0<<0)    /* 44.1kHz */
  130. #define IEC958_AES3_CON_FS_NOTID    (1<<0)    /* non indicated */
  131. #define IEC958_AES3_CON_FS_48000    (2<<0)    /* 48kHz */
  132. #define IEC958_AES3_CON_FS_32000    (3<<0)    /* 32kHz */
  133. #define IEC958_AES3_CON_FS_22050    (4<<0)    /* 22.05kHz */
  134. #define IEC958_AES3_CON_FS_24000    (6<<0)    /* 24kHz */
  135. #define IEC958_AES3_CON_FS_88200    (8<<0)    /* 88.2kHz */
  136. #define IEC958_AES3_CON_FS_768000    (9<<0)    /* 768kHz */
  137. #define IEC958_AES3_CON_FS_96000    (10<<0)    /* 96kHz */
  138. #define IEC958_AES3_CON_FS_176400    (12<<0)    /* 176.4kHz */
  139. #define IEC958_AES3_CON_FS_192000    (14<<0)    /* 192kHz */
  140. #define IEC958_AES3_CON_CLOCK        (3<<4)    /* mask - clock accuracy */
  141. #define IEC958_AES3_CON_CLOCK_1000PPM    (0<<4)    /* 1000 ppm */
  142. #define IEC958_AES3_CON_CLOCK_50PPM    (1<<4)    /* 50 ppm */
  143. #define IEC958_AES3_CON_CLOCK_VARIABLE    (2<<4)    /* variable pitch */
  144. #define IEC958_AES4_CON_MAX_WORDLEN_24    (1<<0)    /* 0 = 20-bit, 1 = 24-bit */
  145. #define IEC958_AES4_CON_WORDLEN        (7<<1)    /* mask - sample word length */
  146. #define IEC958_AES4_CON_WORDLEN_NOTID    (0<<1)    /* not indicated */
  147. #define IEC958_AES4_CON_WORDLEN_20_16    (1<<1)    /* 20-bit or 16-bit */
  148. #define IEC958_AES4_CON_WORDLEN_22_18    (2<<1)    /* 22-bit or 18-bit */
  149. #define IEC958_AES4_CON_WORDLEN_23_19    (4<<1)    /* 23-bit or 19-bit */
  150. #define IEC958_AES4_CON_WORDLEN_24_20    (5<<1)    /* 24-bit or 20-bit */
  151. #define IEC958_AES4_CON_WORDLEN_21_17    (6<<1)    /* 21-bit or 17-bit */
  152. #define IEC958_AES4_CON_ORIGFS        (15<<4)    /* mask - original sample frequency */
  153. #define IEC958_AES4_CON_ORIGFS_NOTID    (0<<4)    /* not indicated */
  154. #define IEC958_AES4_CON_ORIGFS_192000    (1<<4)    /* 192kHz */
  155. #define IEC958_AES4_CON_ORIGFS_12000    (2<<4)    /* 12kHz */
  156. #define IEC958_AES4_CON_ORIGFS_176400    (3<<4)    /* 176.4kHz */
  157. #define IEC958_AES4_CON_ORIGFS_96000    (5<<4)    /* 96kHz */
  158. #define IEC958_AES4_CON_ORIGFS_8000    (6<<4)    /* 8kHz */
  159. #define IEC958_AES4_CON_ORIGFS_88200    (7<<4)    /* 88.2kHz */
  160. #define IEC958_AES4_CON_ORIGFS_16000    (8<<4)    /* 16kHz */
  161. #define IEC958_AES4_CON_ORIGFS_24000    (9<<4)    /* 24kHz */
  162. #define IEC958_AES4_CON_ORIGFS_11025    (10<<4)    /* 11.025kHz */
  163. #define IEC958_AES4_CON_ORIGFS_22050    (11<<4)    /* 22.05kHz */
  164. #define IEC958_AES4_CON_ORIGFS_32000    (12<<4)    /* 32kHz */
  165. #define IEC958_AES4_CON_ORIGFS_48000    (13<<4)    /* 48kHz */
  166. #define IEC958_AES4_CON_ORIGFS_44100    (15<<4)    /* 44.1kHz */
  167. #define IEC958_AES5_CON_CGMSA        (3<<0)    /* mask - CGMS-A */
  168. #define IEC958_AES5_CON_CGMSA_COPYFREELY (0<<0)    /* copying is permitted without restriction */
  169. #define IEC958_AES5_CON_CGMSA_COPYONCE    (1<<0)    /* one generation of copies may be made */
  170. #define IEC958_AES5_CON_CGMSA_COPYNOMORE (2<<0)    /* condition not be used */
  171. #define IEC958_AES5_CON_CGMSA_COPYNEVER    (3<<0)    /* no copying is permitted */
  172.  
  173. /*****************************************************************************
  174.  *                                                                           *
  175.  *                            MIDI v1.0 interface                            *
  176.  *                                                                           *
  177.  *****************************************************************************/
  178.  
  179. #define MIDI_CHANNELS            16
  180. #define MIDI_GM_DRUM_CHANNEL        (10-1)
  181.  
  182. /*
  183.  *  MIDI commands
  184.  */
  185.  
  186. #define MIDI_CMD_NOTE_OFF        0x80
  187. #define MIDI_CMD_NOTE_ON        0x90
  188. #define MIDI_CMD_NOTE_PRESSURE        0xa0
  189. #define MIDI_CMD_CONTROL        0xb0
  190. #define MIDI_CMD_PGM_CHANGE        0xc0
  191. #define MIDI_CMD_CHANNEL_PRESSURE    0xd0
  192. #define MIDI_CMD_BENDER            0xe0
  193.  
  194. #define MIDI_CMD_COMMON_SYSEX        0xf0
  195. #define MIDI_CMD_COMMON_MTC_QUARTER    0xf1
  196. #define MIDI_CMD_COMMON_SONG_POS    0xf2
  197. #define MIDI_CMD_COMMON_SONG_SELECT    0xf3
  198. #define MIDI_CMD_COMMON_TUNE_REQUEST    0xf6
  199. #define MIDI_CMD_COMMON_SYSEX_END    0xf7
  200. #define MIDI_CMD_COMMON_CLOCK        0xf8
  201. #define MIDI_CMD_COMMON_START        0xfa
  202. #define MIDI_CMD_COMMON_CONTINUE    0xfb
  203. #define MIDI_CMD_COMMON_STOP        0xfc
  204. #define MIDI_CMD_COMMON_SENSING        0xfe
  205. #define MIDI_CMD_COMMON_RESET        0xff
  206.  
  207. /*
  208.  *  MIDI controllers
  209.  */
  210.  
  211. #define MIDI_CTL_MSB_BANK        0x00
  212. #define MIDI_CTL_MSB_MODWHEEL             0x01
  213. #define MIDI_CTL_MSB_BREATH               0x02
  214. #define MIDI_CTL_MSB_FOOT                 0x04
  215. #define MIDI_CTL_MSB_PORTAMENTO_TIME     0x05
  216. #define MIDI_CTL_MSB_DATA_ENTRY        0x06
  217. #define MIDI_CTL_MSB_MAIN_VOLUME          0x07
  218. #define MIDI_CTL_MSB_BALANCE              0x08
  219. #define MIDI_CTL_MSB_PAN                  0x0a
  220. #define MIDI_CTL_MSB_EXPRESSION           0x0b
  221. #define MIDI_CTL_MSB_EFFECT1        0x0c
  222. #define MIDI_CTL_MSB_EFFECT2        0x0d
  223. #define MIDI_CTL_MSB_GENERAL_PURPOSE1     0x10
  224. #define MIDI_CTL_MSB_GENERAL_PURPOSE2     0x11
  225. #define MIDI_CTL_MSB_GENERAL_PURPOSE3     0x12
  226. #define MIDI_CTL_MSB_GENERAL_PURPOSE4     0x13
  227. #define MIDI_CTL_LSB_BANK        0x20
  228. #define MIDI_CTL_LSB_MODWHEEL            0x21
  229. #define MIDI_CTL_LSB_BREATH               0x22
  230. #define MIDI_CTL_LSB_FOOT                 0x24
  231. #define MIDI_CTL_LSB_PORTAMENTO_TIME     0x25
  232. #define MIDI_CTL_LSB_DATA_ENTRY        0x26
  233. #define MIDI_CTL_LSB_MAIN_VOLUME          0x27
  234. #define MIDI_CTL_LSB_BALANCE              0x28
  235. #define MIDI_CTL_LSB_PAN                  0x2a
  236. #define MIDI_CTL_LSB_EXPRESSION           0x2b
  237. #define MIDI_CTL_LSB_EFFECT1        0x2c
  238. #define MIDI_CTL_LSB_EFFECT2        0x2d
  239. #define MIDI_CTL_LSB_GENERAL_PURPOSE1     0x30
  240. #define MIDI_CTL_LSB_GENERAL_PURPOSE2     0x31
  241. #define MIDI_CTL_LSB_GENERAL_PURPOSE3     0x32
  242. #define MIDI_CTL_LSB_GENERAL_PURPOSE4     0x33
  243. #define MIDI_CTL_SUSTAIN                  0x40
  244. #define MIDI_CTL_PORTAMENTO               0x41
  245. #define MIDI_CTL_SOSTENUTO                0x42
  246. #define MIDI_CTL_SOFT_PEDAL               0x43
  247. #define MIDI_CTL_LEGATO_FOOTSWITCH    0x44
  248. #define MIDI_CTL_HOLD2                    0x45
  249. #define MIDI_CTL_SC1_SOUND_VARIATION    0x46
  250. #define MIDI_CTL_SC2_TIMBRE        0x47
  251. #define MIDI_CTL_SC3_RELEASE_TIME    0x48
  252. #define MIDI_CTL_SC4_ATTACK_TIME    0x49
  253. #define MIDI_CTL_SC5_BRIGHTNESS        0x4a
  254. #define MIDI_CTL_SC6            0x4b
  255. #define MIDI_CTL_SC7            0x4c
  256. #define MIDI_CTL_SC8            0x4d
  257. #define MIDI_CTL_SC9            0x4e
  258. #define MIDI_CTL_SC10            0x4f
  259. #define MIDI_CTL_GENERAL_PURPOSE5         0x50
  260. #define MIDI_CTL_GENERAL_PURPOSE6         0x51
  261. #define MIDI_CTL_GENERAL_PURPOSE7         0x52
  262. #define MIDI_CTL_GENERAL_PURPOSE8         0x53
  263. #define MIDI_CTL_PORTAMENTO_CONTROL    0x54
  264. #define MIDI_CTL_E1_REVERB_DEPTH    0x5b
  265. #define MIDI_CTL_E2_TREMOLO_DEPTH    0x5c
  266. #define MIDI_CTL_E3_CHORUS_DEPTH    0x5d
  267. #define MIDI_CTL_E4_DETUNE_DEPTH    0x5e
  268. #define MIDI_CTL_E5_PHASER_DEPTH    0x5f
  269. #define MIDI_CTL_DATA_INCREMENT           0x60
  270. #define MIDI_CTL_DATA_DECREMENT           0x61
  271. #define MIDI_CTL_NONREG_PARM_NUM_LSB      0x62
  272. #define MIDI_CTL_NONREG_PARM_NUM_MSB      0x63
  273. #define MIDI_CTL_REGIST_PARM_NUM_LSB      0x64
  274. #define MIDI_CTL_REGIST_PARM_NUM_MSB    0x65
  275. #define MIDI_CTL_ALL_SOUNDS_OFF        0x78
  276. #define MIDI_CTL_RESET_CONTROLLERS    0x79
  277. #define MIDI_CTL_LOCAL_CONTROL_SWITCH    0x7a
  278. #define MIDI_CTL_ALL_NOTES_OFF        0x7b
  279. #define MIDI_CTL_OMNI_OFF        0x7c
  280. #define MIDI_CTL_OMNI_ON        0x7d
  281. #define MIDI_CTL_MONO1            0x7e
  282. #define MIDI_CTL_MONO2            0x7f
  283.  
  284. #endif /* __SOUND_ASOUNDEF_H */
  285.